package com.itheima.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 需要实现接口
@Component// 对象交给spring管理
public class MyInterceptor implements HandlerInterceptor {
    // ctrl+o 表示 重写方法 提示
    // localhost:8080/depts  get
    // 执行目标资源方法之前执行，返回true 放行  返回false 拦截不放行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("----------------------preHandle------------");
        return true;//放行
    }
   // 目标资源 方法执行后执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("--------------postHandle---------------------");
    }
   // (视图渲染JSP结束后 jsp=html+java ModelAndView )完成后执行
    // 以前  jsp页面里面 页面代码和数据代码 融合后  在发送给前端之前执行
    // 最终执行...(马上就要把数据 发送前端).  以前的作用是处理 请求过程中的异常的。 因为我们有统一异常处理器
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion......");
    }
}
